package com.dev.itheima.test6case1;

import java.util.ArrayList;
import java.util.Collections;

public class MyThread extends Thread {

    ArrayList<Integer> list;

    public MyThread(ArrayList<Integer> list) {
        this.list = list;
    }

    //线程一
    static ArrayList<Integer> list1 = new ArrayList<>();
    //线程二
    static ArrayList<Integer> list2 = new ArrayList<>();
    
    // 在此次抽奖过程中，抽奖箱1总共产生了6个奖项。
    // 分别为：10,20,100,500,2,300最高奖项为300元，总计额为932元
    // 在此次抽奖过程中，抽奖箱2总共产生了6个奖项。
    // 分别为：5,50,200,800,80,700最高奖项为800元，总计额为1835元
    @Override
    public void run() {
        while (true) {
            synchronized (MyThread.class) {
                if (list.size() == 0) {
                    if("抽奖箱1".equals(getName())){
                        // Integer max = list1.stream().max(Integer::compare).get();
                        Integer max = Collections.max(list1);
                        Integer sum = list1.stream().reduce(0, Integer::sum);
                        System.out.println("在此次抽奖过程中，抽奖箱1总共产生了"+list1.size()+"个奖项"+'\n' +
                                "分别为："+ list1+",最高奖项为["+max+"]元,总计额为["+sum+"]元"+'\n');
                    }else {
                        // Integer max = list2.stream().max(Integer::compare).get();
                        Integer max = Collections.max(list2);
                        Integer sum = list2.stream().reduce(0, Integer::sum);
                        System.out.println("在此次抽奖过程中，抽奖箱2总共产生了"+list2.size()+"个奖项"+'\n' +
                                "分别为："+ list2+",最高奖项为["+max+"]元,总计额为["+sum+"]元"+'\n');
                    }
                    break;
                } else {
                    //继续抽奖
                    Collections.shuffle(list);
                    int prize = list.remove(0);
                    if("抽奖箱1".equals(getName())){
                        list1.add(prize);
                    }else {
                        list2.add(prize);
                    }
                }
            }
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}
